//
// Created by lights on 2024/6/22.
//
#include "..\\common.h"

template<class Type>
inline void swap(Type &a,Type &b);
int scope = 0;

template<class Type>
void perm(Type list[],int k,int m ){
    scope++;
    std::cout << scope << std::endl;
    if(k == m){
        for(int i = 0; i < m ; i++){
            std::cout << list[i];
        }
        std::cout << std::endl;
    } else{
        for(int i = k; i<=m ; i++){
            swap(list[i],list[k]);
            perm(list,k+1,m);
            swap(list[i],list[k]);
        }
    }
    scope--;
    std::cout << scope << std::endl;
}

template<class Type>
inline void swap(Type &a,Type &b){
    Type temp = a;
    a = b;
    b = temp;
}


//int main() {
//    std::ofstream log_file("output.log"); // 打开日志文件
//    LoggerStreamBuf log_buf(std::cout.rdbuf(), log_file); // 创建自定义缓冲区
//    std::cout.rdbuf(&log_buf); // 重定向标准输出到自定义缓冲区
//
//    std::cout << "This is a test message." << std::endl; // 测试输出
//    std::cout << "Logging another message." << std::endl;
//
//    return 0;
//}

//int main(){
//    std::ofstream outfile("output.txt"); // 创建输出文件流对象，文件名为 output.txt
//    if(outfile.is_open()){
//        int list[10] = {0,1,2,3,4,5,6,7,8,9};
//        perm(list,0,9);
//    } else{
//        std::cerr << "Unable to open file output.txt" << std::endl;
//    }
//}